package ru.susu.algebra.ui.formatters;

import java.math.BigInteger;

import ru.susu.algebra.pair.Pair;
import ru.susu.algebra.util.NumberUtilities;

/**
 * Представляет целое число в виде произведения степеней простых чисел.
 *
 * @author akargapolov
 * @since: 26.04.2010
 */
public class FactorizationFormatter implements IFormatter<BigInteger>
{
	/**
	 * @param value целое число типа {@link BigInteger}
	 * @return строкое представление числа в виде степеней простых чисел
	 */
	@Override
	public String format(BigInteger value)
	{
		Pair<Integer, Integer>[] factorization = NumberUtilities.factorization(value);
		StringBuffer buf = new StringBuffer();
		for (Pair<Integer, Integer> pair : factorization)
		{
			if (buf.length() != 0)
				buf.append(" * ");
			buf.append(pair.getKey());
			if (pair.getValue().intValue() > 1)
				buf.append("^").append(pair.getValue());
		}
		return buf.toString();
	}

}
